Various communication networks exist for enabling distributed devices to communicate and exchange information. Networks usually are classified based upon three properties: topology, protocol, and architecture. The topology of a network specifies the geometric arrangement of the network. Common topologies are a bus, ring, and star. The protocol specifies a common set of rules and signals the device on the network use to communicate. The architecture of a network refers to the network design. There are two major types of network architecture: peer-to-peer and client-server. In a peer-to-peer networking configuration, there is no central server, and devices simply connect with each other in a workgroup to share files, printers, and Internet access. In a client-server architecture, there usually is a central server, with which all of the devices register. The central server usually provides a variety of services, including centrally routed Internet access, e-mail, file sharing, and printer access, as well as ensuring security across the network. A network architecture also may be characterized as being open (i.e., the specifications are available to the public) or closed (i.e., the specifications are proprietary).
Unfortunately, different network platforms and transport facilities have developed independently of one another, each with its own idiosyncratic computing platform (hardware and software) and communications protocol. As a result, it has become increasingly difficult to implement communications programs that enable different types of devices to communicate over different networks.
Middleware products have been developed to address the need for interfaces between different computing platforms. Middleware is positioned between different components and resources of a computer network that communicate with each other. Middleware typically includes software products designed to provide various infrastructure and interfacing services between the different components and resources. Most middleware products support a tightly coupled distributed system model that requires all parts of a distributed system to be developed using a pre-defined application program interface (API). As result, any changes to any module require modifications to other modules, and changes to the API may require extensive changes to all modules. Many middleware product models have been developed (e.g., CORBA (Common Object Request Broker Architecture) from OMG, RMI (Remote Method Invocation) from Sun Microsystems, Inc., and DCOM (Distributed Component Object Model) from Microsoft Corporation). Typically, each such model is incompatible with other models, and applications developed under any such model will be unable to communicate with any application developed under a different model. Systems based upon such models typically include modules that rely upon middleware to provide a variety of services (e.g., connectivity, message routing, and data encryption). Applications developed under such a system are integrated tightly with the middleware and, therefore, are not readily integrated with the services of other systems.